home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / BARNET / FREENET / BRODIE / HTTPSERV / !HTTPServr / !Help < prev    next >
Text File  |  1997-04-21  |  12KB  |  295 lines

  1. =======================================
  2. HTTPServer © Stewart Brodie, April 1997
  3. =======================================
  4.  
  5. Contains:
  6.      Legal Declaration
  7.      Installation Instructions
  8.     Security & Hacking Attempts
  9.     Log Files
  10.     Stopping the server
  11.     Running multiple servers
  12.     Multiple Concurrent Connections
  13.     Automatic connection drop on timeout
  14.     Reverse DNS lookup
  15.     Performance Issues
  16.     CGI (Common Gateway Interface)
  17.     Imagemaps
  18.      Contact addresses
  19.      
  20.  
  21. Legal Declaration
  22. =================
  23.  
  24. In the legal declaration below, "This Product" is defined to be all the
  25. files within the original archive
  26.  
  27. "the author" is Stewart Brodie (S.N.Brodie@ecs.southampton.ac.uk)
  28.  
  29. This version of this product is 'freeware'.  My definition of 'freeware': 
  30. This means that the author retains copyright over the product, but allows
  31. unlimited distribution except:
  32.  
  33.    i) No charge must be made (except for a nominal fee for distribution media)
  34.   ii) This Product must be distributed as a complete package
  35.  iii) This Product may not be distributed as part of a non-free
  36.       [free as in (i)] package (of any kind, magazine/hardware/software)
  37.       without prior written consent from the author.
  38.  
  39. This version may be freely uploaded to FTP sites, provided all the above
  40. conditions are met.
  41.  
  42. No liability whatsoever is accepted by the author of this product for losses
  43. or damage of any kind at all arising, or allegedly arising, from the use, or
  44. misuse, of This Product.
  45.  
  46. The author does not guarantee the functionality of the package, and does not
  47. guarantee to fix any reported bugs, although the author will investigate bug
  48. reports and may release new versions.
  49.  
  50. Instructions
  51. ============
  52.  
  53. If you have already attempted to run this software, you will have discovered
  54. that it refuses to run without the configuration file being edited.  You
  55. *MUST EDIT THE CONFIGURATION FILE* to set up your e-mail address in the
  56. server admin variable and the machine's hostname.  The other things should
  57. not need changing, but check them anyway.
  58.  
  59.  
  60. The package comes with a sample HTML file and two sample CGI programs.  
  61. These are pre-installed in the !HTTPServr.WWWPages directory.  You can move
  62. the pages anywhere you like as long as the entry in !Config points to them.
  63. The URL for the !HTTPServr.WWWPages.index page is:
  64.  
  65. http://yourmc.domain.name/
  66. OR http://yourmc.domain.name/index
  67. OR http://yourmc.domain.name/index.html
  68.  
  69. Note that type names are looked up (with OS_FSControl 31) to enable you
  70. to have a file called 'index' of type HTML which will be matched by a
  71. request for index.html.  Alternatively you can have index/html which will
  72. also match a request for index.html
  73.  
  74. The URL for the 'running' cgi script (!HTTPServr.WWWPages.cgi-bin.running) is:
  75. http://yourmc.domain.name/cgi-bin/running
  76.  
  77. Note that / and . characters are reversed in the bit after the hostname.
  78.  
  79.  
  80.  
  81. Security & Hacking Attempts
  82. ===========================
  83.  
  84. People who are aware that the server is running under RISC OS may attempt to
  85. compromise security on your system by requesting URLs with characters which
  86. have a special meaning to FileSwitch.  However, they will find that they are
  87. unable to do so as the server will reject any URL which contains any of:
  88.  
  89. : $ % & ^ * " @ # < > \
  90.  
  91. Note that URLs prefixed with temporary filesystems such as -adfs- are
  92. harmless since the HTTPServer$Base path will be prepended.
  93.  
  94.  
  95. Log Files
  96. =========
  97.  
  98. All accesses to the server are logged to the log file.  When logging
  99. information is being logged, the server keeps the file open (so you won't be
  100. able to look at it then).  The file will be closed if nothing is logged for
  101. about 2 or 3 seconds. This saves on the massive performance hit incurred by
  102. repeatedly opening and closing the log file.
  103.  
  104. To aid automated processing of the transfer logs, a second log file is
  105. written in Common Log File format.  This is subject to the same conditions
  106. as the normal Log file in that it is kept open for a few seconds after a
  107. new write to avoid constantly opening and closing it.  The code that
  108. generates the CLF entries has not been thoroughly tested.  I do not know
  109. what to do about CGI scripts though - the server has no knowledge of the
  110. size of data returned by those scripts and hence cannot accurately log
  111. those.
  112.  
  113.  
  114. Stopping the server
  115. ===================
  116.  
  117. You can use the Task Manager to kill the HTTPserver task by clicking MENU
  118. over the HTTPServer entry and on the 'Task HTTPServer' submenu, you will find
  119. a Quit entry.  HTTPServer does not install an icon bar icon or respond to any
  120. other Wimp messages.
  121.  
  122.  
  123. Running Multiple Servers
  124. ========================
  125.  
  126. It is possible to run multiple copies of HTTPserver provided that they are on
  127. different port numbers.   The number in brackets following the HTTPServer
  128. bit on the Task Manager display is the port number on which the server is
  129. running.  The default IANA registered port for HTTP is 80, but some
  130. organisations do not like unofficial servers run on that port, so require
  131. them to run elsewhere (eg. 8080).  The port number is configurable in the
  132. !Config file.
  133.  
  134. To run multiple versions you will need multiple configuration files.  The
  135. system variables set by !Config files are read once only in the main program,
  136. always at the start before starting up as a Wimp task, so you can start up
  137. various copies.  See the Examples subdirectory for a 3 server system example.
  138. If you double-click on MultiServs then 3 servers will be started, one on port
  139. 8081, one on 8082 and one on 8083.  Each one will serve files out of a
  140. different subdirectory and generate separate log files, although only the
  141. log files and the ports need to be different.
  142.  
  143.  
  144. Multiple Concurrent Connections
  145. ===============================
  146.  
  147. HTTPServer can handle multiple connections on the same port at once.  The
  148. number of allowed connections is defined near the end of the !Config file. 
  149. This will be the number of connections that will allowed to be processed
  150. concurrently.  It is set to 4 by default which for low usage is probably over
  151. the top.  If it is the case that a 5th connection is requested, then it will
  152. be queued (you can have up to 5 connections pending - this is a feature of
  153. the TCP/IP stack).  The log file will contain messages to the effect that a
  154. pending connection could not be accepted due to the maximum number of
  155. connections having been reached.  Having a few of these isn't important, but
  156. if over half the content of the log file is these error messages, then you
  157. should increase the limit.  If you find that you need to have this number in
  158. double figures, then you should probably consider getting a different system
  159. to run your service on (a high powered UNIX server probably)
  160.  
  161.  
  162. Automatic connection drop on timeout
  163. ====================================
  164.  
  165. If no traffic has been detected on a connection to a client for a specific
  166. time (controlled by HTTPServer$Timeout) then the connection will be dropped
  167. immediately (the implication being a network problem at the remote end)
  168. This feature may be disabled by setting the timeout to zero.  Note that the
  169. time is measured in *minutes*.
  170.  
  171.  
  172. Reverse DNS lookup
  173. ==================
  174.  
  175. As it stands, the program expects my DNSResolver module to be loaded in order
  176. to perform multitasking DNS lookups on incoming addresses so that it can tell
  177. you the site name that accessed the server.  If you do not have InetDB
  178. running, or something with an identical interface, then you should edit the
  179. !RunImage file and find the declaration of use_rev_dns% (or aa%).  Set this
  180. to 0 - it's the very first declaration in the !RunImage
  181.  
  182.  
  183. Performance Issues
  184. ==================
  185.  
  186. There are several things which can be done to improve (or impair!) the
  187. performance of the server.
  188.  
  189. Use of reverse DNS lookups can impair the perceived performance dramatically
  190. if the lookups are failing, so you may choose to disable these.  Doing this
  191. will result in IP addresses being logged to the log file instead of host
  192. names.
  193.  
  194. Increasing the buffer size to 16K can speed up data transfer by as much
  195. as 900% when used over Ethernet networks (since the output buffers are
  196. kept as full as possible).  Buffer size is controlled by the variable
  197. HTTPServer$BufferSize in the !Config file.  16K is the default size in
  198. this version, plus non-blocking socket I/O has been used so the console
  199. user will suffer even less machine performance degradation when files are
  200. being served (basically, only during the reverse DNS lookup)
  201.  
  202.  
  203. CGI (Common Gateway Interface)
  204. ==============================
  205.  
  206. You can place executables inside the directory cgi-bin which will be
  207. executed automatically.  There are a few programs supplied, although
  208. they aren't very neat at the moment.  Note that imagemap is a special
  209. case and is discussed in the next section.
  210.  
  211. All CGI scripts (UNIX terminology, although as long as RISC OS can
  212. execute them, they sbould be OK) are invoked with certain parameters:
  213.  
  214. http/1.0    If present indicates HTTP/1.0 protocol.  Can be http/0.9, or
  215.         other protocol number (but version will be > 1.0 )
  216. -socket num     The socket handle is 'num'
  217. -head        HTTP method used was HEAD
  218. -post        HTTP method used was POST
  219.  
  220. When neither -head nor -post is present, then the method used was GET.
  221.  
  222. When a script is called with a GET method and a query has been appended
  223. to the URL, it will have been stored in an environment variable:
  224.  
  225. HTTPServer$port$num$Query
  226.  
  227. where 'port' is the port number on which the server is running and
  228. 'num' is the socket number from above.  To find out the port number,
  229. you need to call SWI Socket_Getsockname (see cgi-bin.post-query lines
  230. 170 and 180 for an example of how to do this.
  231.  
  232. When a script is called with a POST method, the a similar scheme is
  233. used except the variables set are:
  234.  
  235. HTTPServer$port$num$ContentType
  236. HTTPServer$port$num$ContentLength
  237.  
  238. which both contain the values given by the remote client.  Furthermore,
  239. all the input from the socket will have been read up as far as the
  240. blank line seperating the headers from the posted document.  The blank
  241. line HAS been consumed, so you need to read ContentLength more bytes
  242. exactly to get the content which will be of type ContentType.  You
  243. should be aware that if the client specifies HTTP/1.1 or later and the
  244. content type is NOT application/x-www-form-urlencoded, then there will
  245. be a 5 second pause before the data actually arrives.  To stop this
  246. pause you should send "HTTP/1.1 100 Continue\r\n\r\n" as post-query
  247. does, as a comeon to the client that the data will be accepted (or
  248. you can send it "HTTP/1.1 400 Bad request" or similar).  The ONLY
  249. circumstance under which two responses can be sent is when the client
  250. uses HTTP/1.1 or later, the type is not x-www-form-urlencoded, and
  251. the type is acceptable to you, in which case the first response must
  252. only be a 100.
  253.  
  254. The CGI facilities are not well tested however and YMMV.  You should
  255. be aware of the HTTP protocol intricacies, particularly with regard to
  256. issuing 3xx responses to POST requests (you MUST use 303 See Other)
  257.  
  258. Imagemaps
  259. =========
  260.  
  261. HTTPServer contains built-in support for the special program 'imagemap'
  262. which must sit inside cgi-bin and be the exectuable supplied with this
  263. archive.  It is taken from the NCSA httpd 1.3 imagemap.c file, suitably
  264. modified by me.  It will look in <HTTPServer$Dir>.imap_PORT for what
  265. under UNIX would be called conf/imagemap.conf and PORT is the decimal
  266. numeric of the server's port (set by HTTPServer$Port in !Config).
  267.  
  268. imap_PORT maps imagemap identifiers and map files.  For example:
  269. /cgi-bin/imagemap/sample?1,2 means that the identifier in imap_PORT
  270. is "sample".  There must be a line in imap_PORT saying:
  271. sample : some-RISC-OS-filename
  272. which is the map file.  Map files usually have a default URL and a
  273. series of areas defined as circles, rectangles and polygons.
  274.  
  275. default default-URL-here
  276. rect http://some.server/somefile.html 0,0 31,31
  277.  
  278. Note that the format used is the NCSA format and not the CERN format.
  279. URLs should be either fully qualified (as in the rect example above),
  280. or relative to the server root (ie. start with /).
  281.  
  282. See http://hoohoo.ncsa.uiuc.edu/docs/setup/admin/Imagemap.html for
  283. more details on how to set up imagemap configuration files.
  284.  
  285.  
  286. Contact Address
  287. ===============
  288.  
  289. Comments & bug reports to: S.N.Brodie@ecs.soton.ac.uk
  290.  
  291.  
  292.  
  293.  
  294. =END=
  295.